home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue27 / archaeop / DinoSource / NonFlatButtons.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1997-09-17  |  2.4 KB  |  97 lines

  1. unit NonFlatButtons;
  2.  
  3. interface
  4.  
  5. implementation
  6.  
  7. uses
  8.   CommonStuff, ExtCtrls, Buttons, Menus, Forms, Controls,
  9.   SysUtils, Dialogs;
  10.  
  11. type
  12.   TNonFlatButtons = class(TObject)
  13.   private
  14.     FSpeedBarPopup: TPopupMenu;
  15.     FSpeedBar: TPanel;
  16.     FSpeedBarFlat: TMenuItem;
  17.   protected
  18.     procedure SetFlatButtons(Value: Boolean);
  19.     procedure DoFlatButtons(Sender: TObject);
  20.   public
  21.     constructor Create;
  22.     destructor Destroy; override;
  23.   end;
  24.  
  25. resourcestring
  26.   SFlat = '&Flat Buttons';
  27.  
  28. const
  29.   SSpeedBarPopup = 'SpeedbarMenu'; //Speed bar's TPopupMenu
  30.   SSpeedBar = 'SpeedPanel'; //Speed bar component
  31.   SRegFlatSpeedBar = 'Flat Speedbar'; //Registry string
  32.  
  33.  
  34. constructor TNonFlatButtons.Create;
  35. begin
  36.   inherited Create;
  37.   //Find speed bar
  38.   FSpeedBar := GetComponent(Application.MainForm, SSpeedBar, SGenericError + SSpeedBar) as TPanel;
  39.   //Find speed bar's popup menu
  40.   FSpeedBarPopup := GetComponent(Application.MainForm, SSpeedBarPopup, SGenericError + SSpeedBarPopup) as TPopupMenu;
  41.   //Set up option menu item
  42.   FSpeedBarFlat := NewItem(SFlat, 0,
  43.     Stuff.Ini.ReadBool(SRegSection, SRegFlatSpeedBar,
  44.       (FSpeedBar.Controls[0] as TSpeedButton).Flat),
  45.     True, DoFlatButtons, 0, '');
  46.   FSpeedBarPopup.Items.Insert(1, FSpeedBarFlat);
  47.  
  48.   //Set the speedbar properties as dictated by registry
  49.   SetFlatButtons(FSpeedBarFlat.Checked);
  50. end;
  51.  
  52. destructor TNonFlatButtons.Destroy;
  53. begin
  54.   //Get rid of option menu item
  55.   FSpeedBarFlat.Free;
  56.   //Restore IDE original state
  57.   SetFlatButtons(True);
  58.   //Save option information
  59.   Stuff.Ini.WriteBool(SRegSection, SRegFlatSpeedBar, FSpeedBarFlat.Checked);
  60.   inherited Destroy
  61. end;
  62.  
  63. procedure TNonFlatButtons.SetFlatButtons(Value: Boolean);
  64. var
  65.   Loop: Integer;
  66. begin
  67.   //Set Flat option as appropriate
  68.   with FSpeedBar do
  69.     for Loop := 0 to ControlCount - 1 do
  70.       if Controls[Loop] is TSpeedButton then
  71.         TSpeedButton(Controls[Loop]).Flat := Value
  72. end;
  73.  
  74. procedure TNonFlatButtons.DoFlatButtons(Sender: TObject);
  75. begin
  76.   //Toggle Flat option
  77.   with (Sender as TMenuItem) do
  78.   begin
  79.     Checked := not Checked;
  80.     SetFlatButtons(Checked)
  81.   end
  82. end;
  83.  
  84. var
  85.   NonFlatButtonsObject: TNonFlatButtons;
  86.  
  87. initialization
  88.   try
  89.     NonFlatButtonsObject := TNonFlatButtons.Create
  90.   except
  91.     on E: Exception do
  92.       ShowMessage(SSetupError + ': ' + E.Message)
  93.   end
  94. finalization
  95.   NonFlatButtonsObject.Free
  96. end.
  97.